/**
 * Copyright (c) 2015-2016, Michael Yang 杨福海 (fuhai999@gmail.com).
 *
 * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/lgpl-3.0.txt
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.wzgl.core.baseModel;

import com.jfinal.plugin.activerecord.IBean;
import com.jfinal.plugin.ehcache.CacheKit;
import com.jfinal.plugin.ehcache.IDataLoader;
import com.wzgl.core.base.JModel;
import com.wzgl.message.MessageKit;

/**
 *  Auto generated by JPress, do not modify this file.
 */
@SuppressWarnings("serial")
public abstract class BaseUser<M extends BaseUser<M>> extends JModel<M> implements IBean {

	public static final String CACHE_NAME = "user";
	public static final String METADATA_TYPE = "user";

	public static final String ACTION_ADD = "user:add";
	public static final String ACTION_DELETE = "user:delete";
	public static final String ACTION_UPDATE = "user:update";

	public void removeCache(Object key){
		if(key == null) return;
		CacheKit.remove(CACHE_NAME, key);
	}

	public void putCache(Object key,Object value){
		CacheKit.put(CACHE_NAME, key, value);
	}

	public M getCache(Object key){
		return CacheKit.get(CACHE_NAME, key);
	}

	public M getCache(Object key,IDataLoader dataloader){
		return CacheKit.get(CACHE_NAME, key, dataloader);
	}



	@Override
	public boolean equals(Object o) {
		if(o == null){ return false; }
		if(!(o instanceof BaseUser<?>)){return false;}

		BaseUser<?> m = (BaseUser<?>) o;
		if(m.getFid() == null){return false;}

		return m.getFid().compareTo(this.getFid()) == 0;
	}

	@Override
	public boolean save() {
		boolean saved = super.save();
		if (saved) { MessageKit.sendMessage(ACTION_ADD, this); }
		return saved;
	}

	@Override
	public boolean delete() {
		boolean deleted = super.delete();
		if (deleted) { MessageKit.sendMessage(ACTION_DELETE, this); }
		return deleted;
	}

	@Override
	public boolean deleteById(Object idValue) {
		boolean deleted = super.deleteById(idValue);
		if (deleted) { MessageKit.sendMessage(ACTION_DELETE, this); }
		return deleted;
	}

	@Override
	public boolean update() {
		boolean update = super.update();
		if (update) { MessageKit.sendMessage(ACTION_UPDATE, this); }
		return update;
	}

	public void setFid(java.lang.String id) {
		set("fid", id);
	}

	public java.lang.String getFid() {
		Object id = get("fid");
		if (id == null)
			return null;

//		return id instanceof String ? (String)id : new String(id.toString());
		return id.toString();
	}
	/***
	 * 登录名
	 * @param username
	 */
	public void setFname(java.lang.String username) {
		set("fname", username);
	}

	public java.lang.String getFname() {
		return get("fname");
	}
	/***
	 * 昵称
	 * @param fnickname
	 */
	public void setFnickname(java.lang.String fnickname) {
		set("fnickname", fnickname);
	}

	public java.lang.String getFnickname() {
		return get("fnickname");
	}
	/***
	 * 密码
	 * @param password
	 */
	public void setFpassword(java.lang.String password) {
		set("fpassword", password);
	}

	public java.lang.String getFpassword() {
		return get("fpassword");
	}
//
//	public void setEmail(java.lang.String email) {
//		set("email", email);
//	}
//
//	public java.lang.String getEmail() {
//		return get("email");
//	}

	/***
	 * 手机
	 * @param fmobile
	 */
	public void setFmobile(java.lang.String fmobile) {
		set("fmobile", fmobile);
	}

	public java.lang.String getFmobile() {
		return get("fmobile");
	}

//	public void setMobileStatus(java.lang.String mobileStatus) {
//		set("mobile_status", mobileStatus);
//	}
//
//	public java.lang.String getMobileStatus() {
//		return get("mobile_status");
//	}

//	public void setTelephone(java.lang.String telephone) {
//		set("telephone", telephone);
//	}
//
//	public java.lang.String getTelephone() {
//		return get("telephone");
//	}
	/***
	 * 账户
	 * @param faccount
	 */
	public void setFaccount(java.lang.String faccount) {
		set("faccount", faccount);
	}

	public java.lang.String getFaccount() {
		return get("faccount");
	}
	/***
	 * 头像地址
	 * @param faccount
	 */
	public void setFheadimgurl(java.lang.String fheadimgurl) {
		set("fheadimgurl", fheadimgurl);
	}

	public java.lang.String getFheadimgurl() {
		return get("fheadimgurl");
	}
	
	/**
	 * 级别
	 * @param flevel
	 */
	public void setFlevel(java.lang.Integer flevel) {
		set("flevel", flevel);
	}
	
	public java.lang.Long getFlevel() {
		return get("flevel");
	}
	
//	public void setGender(java.lang.String gender) {
//		set("gender", gender);
//	}
//
//	public java.lang.String getGender() {
//		return get("gender");
//	}

//	public void setRole(java.lang.String role) {
//		set("role", role);
//	}
//
//	public java.lang.String getRole() {
//		return get("role");
//	}

//	public void setSignature(java.lang.String signature) {
//		set("signature", signature);
//	}
//
//	public java.lang.String getSignature() {
//		return get("signature");
//	}

//	public void setContentCount(java.lang.Long contentCount) {
//		set("content_count", contentCount);
//	}
//
//	public java.lang.Long getContentCount() {
//		return get("content_count");
//	}
//
//	public void setCommentCount(java.lang.Long commentCount) {
//		set("comment_count", commentCount);
//	}
//
//	public java.lang.Long getCommentCount() {
//		return get("comment_count");
//	}

//	public void setQq(java.lang.String qq) {
//		set("qq", qq);
//	}
//
//	public java.lang.String getQq() {
//		return get("qq");
//	}

//	public void setWechat(java.lang.String wechat) {
//		set("wechat", wechat);
//	}
//
//	public java.lang.String getWechat() {
//		return get("wechat");
//	}

//	public void setWeibo(java.lang.String weibo) {
//		set("weibo", weibo);
//	}
//
//	public java.lang.String getWeibo() {
//		return get("weibo");
//	}
//
//	public void setFacebook(java.lang.String facebook) {
//		set("facebook", facebook);
//	}
//
//	public java.lang.String getFacebook() {
//		return get("facebook");
//	}
//
//	public void setLinkedin(java.lang.String linkedin) {
//		set("linkedin", linkedin);
//	}
//
//	public java.lang.String getLinkedin() {
//		return get("linkedin");
//	}

//	public void setBirthday(java.util.Date birthday) {
//		set("birthday", birthday);
//	}
//
//	public java.util.Date getBirthday() {
//		return get("birthday");
//	}
//
//	public void setCompany(java.lang.String company) {
//		set("company", company);
//	}
//
//	public java.lang.String getCompany() {
//		return get("company");
//	}
//
//	public void setOccupation(java.lang.String occupation) {
//		set("occupation", occupation);
//	}
//
//	public java.lang.String getOccupation() {
//		return get("occupation");
//	}

//	public void setAddress(java.lang.String address) {
//		set("address", address);
//	}
//
//	public java.lang.String getAddress() {
//		return get("address");
//	}
//
//	public void setZipcode(java.lang.String zipcode) {
//		set("zipcode", zipcode);
//	}
//
//	public java.lang.String getZipcode() {
//		return get("zipcode");
//	}
//
//	public void setSite(java.lang.String site) {
//		set("site", site);
//	}
//
//	public java.lang.String getSite() {
//		return get("site");
//	}
//
//	public void setGraduateschool(java.lang.String graduateschool) {
//		set("graduateschool", graduateschool);
//	}
//
//	public java.lang.String getGraduateschool() {
//		return get("graduateschool");
//	}
//
//	public void setEducation(java.lang.String education) {
//		set("education", education);
//	}
//
//	public java.lang.String getEducation() {
//		return get("education");
//	}
//
//	public void setAvatar(java.lang.String avatar) {
//		set("avatar", avatar);
//	}
//
//	public java.lang.String getAvatar() {
//		return get("avatar");
//	}
//
//	public void setIdcardtype(java.lang.String idcardtype) {
//		set("idcardtype", idcardtype);
//	}
//
//	public java.lang.String getIdcardtype() {
//		return get("idcardtype");
//	}
//
//	public void setIdcard(java.lang.String idcard) {
//		set("idcard", idcard);
//	}
//
//	public java.lang.String getIdcard() {
//		return get("idcard");
//	}
	/**
	 * 状态
	 * @param fstatus
	 */
	public void setFstatus(java.lang.String fstatus) {
		set("fstatus", fstatus);
	}

	public java.lang.String getFstatus() {
		return get("fstatus");
	}
	/**
	 * 性别
	 * @param fsex
	 */
	public void setFsex(java.lang.String fsex) {
		set("fsex", fsex);
	}

	public java.lang.String getFsex() {
		return get("fsex");
	}
	/***
	 * 创建时间
	 * @param fctime
	 */
	public void setFctime(java.util.Date fctime) {
		set("fctime", fctime);
	}

	public java.util.Date getFctime() {
		return get("fctime");
	}
	/***
	 * 最后登录日期
	 * @param futime
	 */
	public void setFutime(java.util.Date futime) {
		set("futime", futime);
	}

	public java.util.Date getFutime() {
		return get("futime");
	}
//	public void setCreateSource(java.lang.String createSource) {
//		set("create_source", createSource);
//	}
//
//	public java.lang.String getCreateSource() {
//		return get("create_source");
//	}
//
//	public void setLogged(java.util.Date logged) {
//		set("logged", logged);
//	}
//
//	public java.util.Date getLogged() {
//		return get("logged");
//	}

//	public void setActivated(java.util.Date activated) {
//		set("activated", activated);
//	}
//
//	public java.util.Date getActivated() {
//		return get("activated");
//	}

}
